
/**
 * 
 * 贪心的商人
 * 
 * 题目描述

商人经营一家店铺，有 number 种商品，由于仓库限制每件商品的最大持有数量是 item[index]，每种商品的价格是 item_price[item_index][day]。

通过对商品的买进和卖出获取利润，请给出商人在 days 天内能获取的最大的利润。

注：同一件商品可以反复买进和卖出
输入描述
3 // 输入商品的数量 number

3 // 输入商人售货天数 days

4 5 6 // 输入仓库限制每件商品的最大持有数量是 item[index]

1 2 3 // 输入第一件商品每天的价格

4 3 2 // 输入第二件商品每天的价格

1 5 3 // 输入第三件商品每天的价格

输出描述
32 // 输出商人在这段时间内的最大利润

备注
根据输入的信息：

number = 3
days = 3
item[3] = {4, 5, 6}
item_price[3][4] = {{1, 2, 3}, {4, 3, 2}, {1, 5, 3}}
针对第一件商品，商人在第一天的价格是 item_price[0][0] = 1 时买入 item[0] 件，在第三天 item_price[0][2] = 3 的时候卖出，获利最大是 8；
针对第二件商品，不进行交易，获利最大时 0；
针对第三件商品，商人在第一天价格是 item_price[2][0] = 1 时买入 item[2] 件，在第二天 item_price[2][0] = 5 的时候卖出，获利最大是24；
因此这段时间商人能获取的最大利润是 8 + 24 = 32；

用例
输入	3
3
4 5 6
1 2 3
4 3 2
1 5 2
输出	32
说明	无
输入	
1
1
1
1
输出	0
说明	无
 */

import java.util.Scanner;

/**
  * 
  题目解析
用例含义如下所示



 因此最多可以赚8 + 24 = 32元。

另外，本题描述说：同一件商品可以反复买进和卖出，因此上面图示买卖操作还可以变为这样：



本题算是华为机试 - 最大股票收益_伏城之外的博客-CSDN博客 的变种题。

我们只要找到商品价格走势的上升区段，然后低价all in买入，高价all out卖出即可求得最大利润。

那么如何找到上升区段呢？

我们假设商品1的第 i 天的价格为 price1[i]，那么只要price1[i] < price1[i+1]，则说明当前处于上升区段的低价位，因此可以all in，然后到i+1天的时候all out。
  */

public class 贪心的商人 {
    
    public static void main(String[] args) {
        
        try{

            Scanner scanner = new Scanner(System.in);

            //商品数量
            int goodsTypeCount = scanner.nextInt();
            //天数
            int dayCount = scanner.nextInt();
            //商品最大数量
            int[] goodsCountArr = new int[goodsTypeCount];
            for(int i=0; i<goodsTypeCount; i++){

                goodsCountArr[i] = scanner.nextInt();
            }
            //商品价格数据解析
            int[][] goodsPrice = new int[goodsTypeCount][dayCount];
            for(int m=0; m<goodsTypeCount; m++){
                for(int n=0; n<dayCount; n++){

                    goodsPrice[m][n] = scanner.nextInt();
                }
            }

            int totalIncome = 0;

            //遍历数据，当判断价格比前一天的价格高，则全部买点
            for(int i=0; i<goodsTypeCount; i++){

                for(int j=0; j<dayCount-1; j++){

                    if(goodsPrice[i][j+1] - goodsPrice[i][j] > 0){

                        //利润 = 2 天价格差
                        totalIncome += (goodsPrice[i][j+1] - goodsPrice[i][j]) * goodsCountArr[i];
                    }
                }
            }

            System.out.println(totalIncome);


        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
